package com.neusoft.neuiotms.dcom.service.insurance;

import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;

import com.neusoft.bizcore.auth.common.bean.UserBean;
import com.neusoft.bizcore.file.dto.FileDTO;
import com.neusoft.bizcore.web.support.Searchable;
import com.neusoft.neuiotms.dcom.dto.insurance.InsuranceInspectionTaskDTO;
import com.neusoft.neuiotms.dcom.dto.insurance.InsuranceRegisterTaskDTO;
import com.neusoft.neuiotms.dcom.dto.insurance.InsuranceReportTaskDTO;
import com.neusoft.neuiotms.dcom.dto.insurance.InsuranceSummaryTaskDTO;

public interface InsuranceRegisterTaskService {

    // 重保服务登记任务
    List<InsuranceRegisterTaskDTO> index(Searchable searchable, final UserBean user);

    Page<InsuranceRegisterTaskDTO> page(Searchable searchable, Pageable pageable, final UserBean user);

    InsuranceRegisterTaskDTO update(final Long id, final InsuranceRegisterTaskDTO dto, final UserBean user);

    InsuranceRegisterTaskDTO detail(final Long id);

    void delete(final Long id);

    // 重保服务巡检任务
    List<InsuranceInspectionTaskDTO> inspectionIndex(Searchable searchable);

    InsuranceInspectionTaskDTO inspectionUpdate(final Long id, final InsuranceInspectionTaskDTO dto,
            final UserBean user);

    InsuranceInspectionTaskDTO inspectionSubmit(final Long id, final InsuranceInspectionTaskDTO dto,
            final UserBean user);

    InsuranceInspectionTaskDTO inspectionDetail(final Long registerTaskId, final String type);

    // 每日上报任务
    List<InsuranceReportTaskDTO> reportIndex(Searchable searchable);

    InsuranceReportTaskDTO reportUpdate(final Long id, final InsuranceReportTaskDTO dto, final UserBean user);

    List<InsuranceReportTaskDTO> reportDetail(final Long id);

    // 服务总结任务
    List<InsuranceSummaryTaskDTO> summaryIndex(Searchable searchable);

    InsuranceSummaryTaskDTO summaryUpdate(final Long id, final InsuranceSummaryTaskDTO dto, final UserBean user);

    InsuranceSummaryTaskDTO summaryDetail(final Long id);

    FileDTO summaryUpload(MultipartFile file);

    void deleteMongoFile(String fsId);

    Page<Map<String, Object>> report(final Pageable pageable, Map<String, Object> params);

    Workbook exportReport(Map<String, Object> params);
}
